package com.jsmtr.rms.service;

import java.util.List;
import java.util.Map;

import com.jsmtr.rms.entity.*;
import com.jsmtr.rms.entity.vo.JobList;


public interface INZService {

    /*********************招聘职位********************/

    /**
     * 获得内部招聘数据列表
     *
     * @param key 岗位名称关键词
     * @return List<JobList>
     * @throws Exception
     */
    List<JobList> selectJobs(String key) throws Exception;

    /**
     * 获得招聘方案信息
     *
     * @param jid ProjectInfoJob的主键
     * @return ProjectInfo
     * @throws Exception
     */
    ProjectInfo getProjectByJid(String jid) throws Exception;

    /*********************个人简历********************/

    /**
     * 获得内部招聘简历基本信息
     *
     * @param code 员工号
     * @return NZResume
     * @throws Exception
     */
    NZResume getResume(String code) throws Exception;

    /**
     * 获得内部招聘学历信息
     *
     * @param code 员工号
     * @return List<NZResumeEducation>
     * @throws Exception
     */
    List<NZResumeEducation> getEducations(String code) throws Exception;

    /**
     * 获得内部招聘共组履历信息
     *
     * @param code 员工号
     * @return List<NZResumeEducation>
     * @throws Exception
     */
    List<NZResumeWork> getWorks(String code) throws Exception;

    /**
     * 获得内部招聘共组履历信息
     *
     * @param id ID
     * @return NZResumeWork
     * @throws Exception
     */
    NZResumeWork getwork(String id) throws Exception;

    /*********************职位申请********************/

    /**
     * 获得内部招聘简历基本信息
     *
     * @param code 员工号
     * @param pid  招聘方案ID
     * @return DNZResume
     * @throws Exception
     */
    DNZResume getDResume(String code, String pid) throws Exception;

    /**
     * 获得内部招聘简历基本信息
     *
     * @param id 简历主键
     * @return DNZResume
     * @throws Exception
     */
    DNZResume getDResume(String id) throws Exception;

    /**
     * 获得内部招聘学历信息
     *
     * @param rid 简历主键
     * @return List<DNZResumeEducation>
     * @throws Exception
     */
    List<DNZResumeEducation> getEducationByRid(String rid) throws Exception;

    /**
     * 获得内部招聘履历信息
     *
     * @param rid 简历主键
     * @return List<DNZResumeWork>
     * @throws Exception
     */
    List<DNZResumeWork> getWorkByRid(String rid) throws Exception;

    /**
     * 获得招聘方案中第一条流程
     *
     * @param pid    招聘方案ID
     * @param forder 流程顺序
     * @return ProjectInfoFlow
     */
    ProjectInfoFlow getFlow(String pid, int forder) throws Exception;

    /**
     * 内部招聘应聘者分页信息
     *
     * @param page    当前页
     * @param perpage 每页显示数
     * @param user    DNZResume
     * @return Map
     */
    Map<String, Object> getUsers(int page, int perpage, DUserResume user) throws Exception;

    NZResume getResumeByID(String id) throws Exception;

    NZResume getResumeByCardno(String cardno) throws Exception;

    DUserResume getDuserResume(String id) throws Exception;

    /*********************简历筛选********************/
    /**
     * 获得人员列表
     *
     * @param pid 招聘方案ID
     * @param ids 人员id集合
     * @return List<DNZResume>
     */
    List<DNZResume> getUsers(String pid, String[] ids) throws Exception;

    /**
     * 获得下一招聘流程
     *
     * @param pid      招聘方案ID
     * @param deptcode 责任部门编码
     * @param fid      当前流程ID
     * @return 招聘流程
     * @throws Exception
     */
    ProjectInfoFlow getNextFlow(String pid, String deptcode, String fid) throws Exception;

    /*********************面试********************/

    /**
     * 获得招聘流程
     *
     * @param id 流程ID
     * @return ProjectInfoFlow
     */
    ProjectInfoFlow getFlow(String id) throws Exception;

    /**
     * 内部招聘应聘者面试分页信息
     *
     * @param page     当前页
     * @param perpage  每页显示数
     * @param user     DNZResume
     * @param fid      招聘流程ID
     * @param msresult 面试结果
     * @param notice   面试计划发布状态
     * @return Map
     */
    Map<String, Object> getMSUsers(int page, int perpage, DNZResume user, String fid, String msresult, int notice) throws Exception;

    /*********************笔试********************/

    /**
     * 内部招聘应聘者笔试分页信息
     *
     * @param page    当前页
     * @param perpage 每页显示数
     * @param user    DNZResume
     * @param fid     招聘流程ID
     * @param result  笔试结果
     * @param notice  笔试通知状态
     * @return Map
     */
    Map<String, Object> getBSUsers(int page, int perpage, DNZResume user, String fid, String result, int notice) throws Exception;


    /*********************报到********************/
    /**
     * 获得报到人数
     *
     * @param pid 招聘方案ID
     * @return List<Object   [   ]> Object[0]：人数，Object[1]：PROJECT_INFO_JOB 的ID
     */
    List<Object[]> getBdUserCount(String pid) throws Exception;

    /*********************放弃应聘********************/
    /**
     * 获得应聘列表
     *
     * @param code 员工号
     * @return List<DNZResume>
     */
    List<DNZResume> getUsers(String code) throws Exception;

    /**
     * 获得内招流程
     *
     * @param pid 招聘方案id
     * @return List<DNZResume>
     */
    List<ProjectInfoFlow> getProjectInfoFlows(String pid) throws Exception;

    DoMSUser getMsUser(String fid, String userid) throws Exception;

    DoBSUser getBsUser(String fid, String userid) throws Exception;

    List<DNZResume> getDResumes(String[] ids) throws Exception;

}
